// 设置压缩图片的最大高度
const MAX_HEIGHT = 640

function dataURLtoFile(dataurl, filename) { // 将base64转换为文件
    var arr = dataurl.split(','); var mime = arr[0].match(/:(.*?);/)[1]
    var bstr = atob(arr[1]); var n = bstr.length; var u8arr = new Uint8Array(n)
    while (n--) {
        u8arr[n] = bstr.charCodeAt(n)
    }
    return new File([u8arr], filename, { type: mime })
}

export default async function({ image, success }) {
    // console.log(image);
    const reader = new FileReader()
    reader.readAsDataURL(image)
    reader.onload = function(evt) {
        handler(this.result, image.name)
    }
    function handler(src, filename) {
        // console.log(src, filename);
        const image = new Image()
        image.src = src
        image.onload = function() {
            const canvas = document.createElement('canvas')
            // 如果高度超标
            if (image.height > MAX_HEIGHT && image.height >= image.width) {
                // 宽度等比例缩放 *=
                image.width *= MAX_HEIGHT / image.height
                image.height = MAX_HEIGHT
            }
            // 考录到用户上传的有可能是横屏图片同样过滤下宽度的图片。
            if (image.width > MAX_HEIGHT && image.width > image.height) {
                // 宽度等比例缩放 *=
                image.height *= MAX_HEIGHT / image.width
                image.width = MAX_HEIGHT
            }
            // 获取 canvas的 2d 画布对象,
            var ctx = canvas.getContext('2d')
            // canvas清屏，并设置为上面宽高
            ctx.clearRect(0, 0, canvas.width, canvas.height)
            // 重置canvas宽高
            canvas.width = image.width
            canvas.height = image.height
            // 将图像绘制到canvas上
            ctx.drawImage(image, 0, 0, image.width, image.height)
            // !!! 注意，image 没有加入到 dom之中
            //        document.getElementById('img').src = canvas.toDataURL("image/png");
            var blob = canvas.toDataURL('image/jpeg')
            // console.log(blob);
            const file = dataURLtoFile(blob, filename)
            success(file)
        }
    }
}

